/* ====================================Map方法====================================================== */
// 类对象
// 和对象的区别是：对象的键一定是字符串，Map的键可以说任意类型
let arr1 = [
    ['name','李白'],
    ['职业','诗人'],
    [false,'是布尔值'],
    [[],'是数组']
    
]
let m = new Map(arr1)
// console.log(m) // Map { 'name' => '李白', '职业' => '诗人', false => '是布尔值', [] => '是数组' }

for (let [key,value] of m) { // 第一个参数是键，第二个是值
    // console.log('键：',key)
    // console.log('值：',value)
}


/* ====================================Set方法====================================================== */
// 类数组
// 和数组的区别是：数组是[]包围，Set是{}包围，并且成员唯一
let arr2 = [1,2,3,2,4,2,3,5]
let s = new Set(arr2)
// console.log(s) // Set { 1, 2, 3, 4, 5 } 

// 实例1：求交集
let temp21 = [1,2,4,2,3,1,5]
let temp22 = [1,4,4,2,10,1,9]

function bothHas(temp21,temp22) {
    let tempArr21 = new Set(temp21)
    let tempArr22 = new Set(temp22)
    return Array.from(tempArr21).filter(item => {
        return tempArr22.has(item)
     })
}
// 实例2：求差集
function unBothHas(temp21,temp22) {
    let tempArr21 = new Set(temp21)
    let tempArr22 = new Set(temp22)
    return Array.from(tempArr21).filter(item => {
        return !tempArr22.has(item)
     })
}
console.log('data2==',bothHas(temp21,temp22))
console.log('data3==',unBothHas(temp21,temp22))

